--- title: "格雷码" created: 2025-11-28 tags: - 算法 --- # 格雷码 ## 题目 [格雷码](https://www.lanqiao.cn/paper/3851/problem/415/) ![[image-e0e4225d.png]] ## 思路分析 奇数次时 改变末尾数字 偶数次时 找到最右边一个1 改变其左侧数字 显然这是要补充第二种情况的实现逻辑 找到最右边的一个1 lowbit x&-x即可 要把左边那个数改变 应该是生成一个 形如00100的掩码 1的位置应该是lowbit找到的1的位置的左边 即 (x&-x)<<1 a = a^((a&-a )<<1) ## 代码实现 ```cpp #include void show(int a,int n) { int i; int msk = 1; for(i=0; i> 1; } printf("\n"); } void f(int n) { int i; int num = 1; for(i=0; i